// 文章的处理函数模块
const path = require('path')
const db = require('../db/index')
const fs = require('fs')
const multiparty = require('multiparty')
const { rejects } = require('assert')

// 图片保存
exports.uploads = (req, res, next) => {
  let form = new multiparty.Form();
  form.uploadDir = "./uploads/images/" + req.headers.fileurl;//图片存储地址
  form.keepExtensions = true;   //是否保留后缀
  form.parse(req, function (err, fields, files) {  //其中fields表示你提交的表单数据对象，files表示你提交的文件对象
    let url = files.file[0].path.replace(/\\/g, '/').replace(RegExp('public'), '')//这个是对图片地址格式做一个格式修改
    if (err) {
      res.json({
        status: 1,
        message: '上传失败:' + err,
      });
    } else {
      res.send({
        status: 0,
        message: '上传成功',
        imgSrc: url  //返回前台图片的地址（如果要在另一个系统中展示图片）
      });
    }
  })
}

// 删除图片
exports.deleteUploads = (req, res, next) => {
  let path = "./" + req.body.fileurl;//图片存储地址
  fs.unlink(path, function (error) {
    if (error) {
      return false;
    }
    res.send({
      status: 0,
      message:'删除成功',
    })

  });
}
// 获取所有图片
exports.getimages = (req, res, next) => {
  new Promise(function (resolve, reject) {
    let data = {}
    fs.readdir('./uploads/images/article', function (err, files) {
      let list1 = files.map(item => {
        return 'uploads/images/article/' + item
      })
      data.articleImage ={name:"文章列表",list:list1}
      fs.readdir('./uploads/images/articleCate', function (err, files) {
        let list2 = files.map(item => {
          return 'uploads/images/articleCate/' + item
        })
        data.artcateImage ={name:"文章分类列表",list:list2}
        resolve(data)
      })
    })
  }
  ).then(function (data) {
    res.send({
      status: 0,
      data:data,
      
    })

  }, function (err) {
    res.send({
      status:1,
      message:'获取图片失败'
    })
  })

}
// 发布文章的处理函数
exports.addArticle = (req, res) => {
  // TODO：证明数据都是合法的，可以进行后续业务逻辑的处理

  const articleInfo = {
    // 标题、内容、发布状态、所属分类的Id
    ...req.body,
    // // 文章的发布时间
    author_id: 1,
  }
  const sql = `insert into ev_articles set ?`
  db.query(sql, articleInfo, (err, results) => {
    if (err) return res.cc(err)
    if (results.affectedRows !== 1) return res.cc('发布新文章失败！')
    res.cc('发布文章成功！', 0)
  })
}

// 获取文章信息
exports.getArticle = (req, res) => {
  // const sql = 'select * from ev_article_cate where is_delete=0 order by id asc'
  const sql = 'select * from ev_articles where is_delete=0 '
  db.query(sql, (err, results) => {
    if (err) return res.cc(err)
    res.send({
      status: 0,
      message: '获取文章数据成功',
      data: results,
    })
  })
}
// 根据文章分类id获取文章的数据
exports.getArticleById = (req, res) => {
  const sql = 'select * from ev_articles where cate_id=? and is_delete=0'
  db.query(sql, req.params.id, (err, results) => {
    if (err) return res.cc(err)
    res.send({
      status: 0,
      message: '获取文章分类数据成功',
      data: results
    })
  })
}
// 根据id删除文章
exports.deleteArticle = (req, res) => {
  const sql = 'update ev_articles set is_delete =1 where id=?'
  db.query(sql, req.params.id, (err, results) => {
    if (err) return res.cc(err)
    if (results.affectedRows != 1) return res.cc('删除文章失败')
    res.cc('删除文章成功！', 0)
  })
}
